import tinify from "tinify";
import path from "path";
import { readdirSync, rmSync, writeFile, readFileSync } from "node:fs";
const compressRecordName = "compressRecord.json"; //压缩后记录已经压缩过文件记录
const __dirname = path.resolve(); //获取当前文件夹的绝对路径
tinify.key = "nlRwXPbk5pZvpRCTzZwnXWrfBvZSGRgJ";

let imgUrl = path.join(__dirname, "./src/assets/img");
const compressRecordUrl = path.join(__dirname, compressRecordName);
let fileContent = "[]";
try {
    //捕获没有的情况下
    fileContent = readFileSync(compressRecordUrl).toString(); //读取已经有的记录
} catch (e) {
    console.log(e);
}
fileContent = JSON.parse(fileContent); //把已经压缩过记录的文件json转换为js数组
let timer;
(function () {
    let e = 0;
    clearInterval(timer),
        (timer = setInterval(() => {
            e++,
                // eslint-disable-next-line no-undef
                process.stdout.write(
                    `\r${"龙 年 大 吉 恭 喜 发 财"[e % "龙 年 大 吉 恭 喜 发 财".length]} 压缩中 ${"y"}`
                );
        }, 200));
})();
const file = readdirSync(imgUrl);
const compress = (file, i = 0) => {
    if (i > file.length - 1 || fileContent.includes(file[i])) {
        clearInterval(timer);
        return;
    }
    fileContent.push(file[i]);
    const resImgUrl = path.join(imgUrl, file[i]); //获取未压缩图片路径
    const source = tinify.fromFile(resImgUrl); //获取未压缩图片
    rmSync(path.join(imgUrl, file[i])); //移除未压缩得图

    source.toFile(path.join(imgUrl, file[i])).then(() => {
        console.log(`\r${file}压缩成功`);
        compress(file, i + 1);
    }); //输出压缩后得图片
};

compress(file);
writeFile(
    path.join(__dirname, compressRecordName),
    JSON.stringify(fileContent),
    (err) => {
        if (err) {
            console.log(err);
        }
    }
);
// readdirSync(imgUrl, (err, files) => {
//     // (function () {
//     //     let e = 0
//     //     let v
//     //     clearInterval(v),
//     //         (v = setInterval(() => {

//     //             (e++,
//     //                 process.stdout.write(
//     //                     `\r${"⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏"[e % "⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏".length]} 压缩中 ${'y'}`
//     //                 ))
//     //         }, 200))
//     // })()

//     const compress = (file, i = 0) => {
//         if (i >= files.length - 1 || fileContent.includes(file[i])) { return }
//         console.log(123213);
//         const resImgUrl = path.join(imgUrl, file[i]);//获取未压缩图片路径
//         const source = tinify.fromFile(resImgUrl); //获取未压缩图片
//         source.toFile(path.join(imgUrl, file)).then(() => {
//             console.log(`\r${file}压缩成功`);
//             rmSync(path.join(imgUrl, file)); //移除未压缩得图
//             compress(file, i + 1)
//         }); //输出压缩后得图片

//     }
//     compress(files)
//     // files.forEach((file) => {
//     //     if (!fileContent.includes(file)) { //判断文件有没有压缩,仅对未压缩过的文件做处理
//     //         fileContent.push(file);
//     //         const resImgUrl = path.join(imgUrl, file);//获取未压缩图片路径
//     //         const source = tinify.fromFile(resImgUrl); //获取未压缩图片
//     //         console.log(source._url, 'source');

//     //         source.toFile(path.join(imgUrl, file)).then(); //输出压缩后得图片
//     //         rmSync(path.join(imgUrl, file)); //移除未压缩得图
//     //     }
//     // });
//     //在当前路径下生成一个json文件，用来记录已经压缩过的文件，作用是下次压缩的时候，可以跳过已经压缩过的文件
//     writeFile(
//         path.join(__dirname, compressRecordName),
//         JSON.stringify(fileContent),
//         (err) => {
//             if (err) {
//                 console.log(err);
//             }
//         }
//     );
// });
